<?php
include_once($_SERVER["DOCUMENT_ROOT"]."/bolsa_trabajo/util/database.php");
include_once($_SERVER["DOCUMENT_ROOT"]."/bolsa_trabajo/dto/bitacoras_dto.php");
include_once($_SERVER["DOCUMENT_ROOT"]."/bolsa_trabajo/dto/usuario_dto.php");
include_once ($_SERVER ["DOCUMENT_ROOT"] . "/bolsa_trabajo/email/email_distribution_list.php");
include_once ($_SERVER ["DOCUMENT_ROOT"] . "/bolsa_trabajo/email/sent_email.php");
class AdmonDTO
{

	public function __construct() {
		exit('Init function is not allowed');
	}


	public static function getAllAdmon(){

		$con = Database::connect();
		$query = "SELECT * FROM tbl_administrador";
		$stmt = $con->prepare( $query );
		$stmt->execute();
		Database::disconnect();
		return $stmt;
	}

	public static function insert($nombres,$apellidos, $email, $login, $clave, $estado){

		//molde query
		$query = "INSERT INTO tbl_administrador SET nombres = ?, apellidos = ?, email = ?, login = ?, clave = md5(?), estado = ?";
		$con = Database::connect();
		//preparar query para ejecucion
		$stmt = $con->prepare($query);

		// Nombres
		$stmt->bindParam(1, $nombres);

		// Apellidos
		$stmt->bindParam(2, $apellidos);

		//Email
		$stmt->bindParam(3, $email);

		//Estado
		$stmt->bindParam(4, $clave );

		//Fecha login
		$stmt->bindParam(5, $login);

		//Clave
		$estado = 'Nuevo';
		$stmt->bindParam(6, $estado);

		// Execute the query
		if($stmt->execute()){
			error_log('Nuevo Admon creado procediendo a registrar en la bitacora',0);
			$idAsignado = UsuarioDTO::validateLoginAdmon($login, $clave);
			$admin = null;
			
			BitacoraAdministrador::addRegisterBitacoraAdministrador($idAsignado,$admin,"CREACION",'Registro de Nuevo Aspirante');
		
			Database::disconnect();
			return true;
		}else{
			error_log('No se pudo crear el Admon',0);
			Database::disconnect();
			return false;
		}

		
	}


	public static function getAdmon($idAdmon){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * FROM tbl_administrador where id_administrador = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($idAdmon));
		return $q;
	}
	
	

	public static function readAdmon($idAdmon){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * from tbl_administrador where id_administrador = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($idAdmon));
		return $q;
	}


	public static function updateBasicAdmon($nombres,$apellidos,$email,$login, $idAdmon){
		$query = "update tbl_administrador SET nombres = ?, apellidos = ?, email = ?, login = ? where id_administrador = ?";
		$con = Database::connect();
		//preparar query para ejecucion
		$stmt = $con->prepare($query);

	// Nombres
		$stmt->bindParam(1, $nombres);

		// Apellidos
		$stmt->bindParam(2, $apellidos);

		//Email
		$stmt->bindParam(3, $email);

		//Fecha login
		$stmt->bindParam(4, $login);

		//Clave
		$stmt->bindParam(5, $idAdmon);



		// Execute the query
		if($stmt->execute()){
			return true;
		}else{
			
			return false;
		}

		Database::disconnect();

	}


	public static function desactivarAdmon($idAspirante,$responsableAdmOpe, $responsableAspOpe,$comentario){
		
		$query = "UPDATE  tbl_aspirante set estado = ? where id_aspirante = ? ";
		$con = Database::connect();
		//preparar query para ejecucion
		$stmt = $con->prepare($query);
		
		
		
		$estadoAspirante = "Inactivo";
		$stmt->bindParam(1, $estadoAspirante);
		$stmt->bindParam(2, $idAspirante);
		
		
		
		// Execute the query
		if($stmt->execute()){
			// Escribimos tambien en la bitacora
			BitacoraAspirante::addRegisterBitacoraAspirante($responsableAdmOpe,$responsableAspOpe,"DESACTIVACION",$comentario,$idAspirante);
		}
		
		
		Database::disconnect();
	}
	
	
	public static function actualizarUrlCV($idAspirante, $urlCV){
		$query = "UPDATE  tbl_aspirante set url_cv = ? where id_aspirante = ? ";
		$con = Database::connect();
		$stmt = $con->prepare($query);
		
		$stmt->bindParam(1, $urlCV);
		$stmt->bindParam(2, $idAspirante);
		$stmt->execute();
		
		Database::disconnect();
		
	}
	
	public static function getUrlCV($idAspirante){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT url_cv FROM tbl_aspirante where id_aspirante = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($idAspirante));
		$num = $q->rowCount();
		if($num > 0 ){
			$data = $q->fetch(PDO::FETCH_ASSOC);
			$urlCV = $data['url_cv'];
			Database::disconnect();
			if($urlCV != null){
				return $urlCV;
			}else{
				return null;
			}
		}
	}
	
	public static function getNuevosAdministradores(){
		
		$con = Database::connect();
		$query = "select adm.id_administrador, adm.nombres, adm.apellidos,adm.email
						from tbl_administrador as adm
						where estado = 'Nuevo'";
		
		$stmt = $con->prepare ( $query );
		$stmt->execute ();
		Database::disconnect();
		return $stmt;
	}
	
	
	public static function getEmailById($idAdministrador){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "select email from tbl_administrador where id_administrador = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($idAdministrador));
		return $q;
	}
	
	

	/*
	 * 3 operaciones
	* 1) Actualizar el estado del empleador
	* 2) Escribir en la bitacora
	* 3) Mandar correo al empleador y al grupo de admin
	*/
	public static function activar ( $idAdministrador, $responsableAdmin, $responsableEmp ){
		$query = "update tbl_administrador set estado = 'Activo' where id_administrador = ? ";
	
		$con = Database::connect ();
		// preparar query para ejecucion
		$stmt = $con->prepare ( $query );
	
	
		$stmt->bindParam ( 1, $idAdministrador );
	
		$res =  $stmt->execute ();
	
		if($res){
			Database::disconnect();
				
			error_log ( 'Activado Administrador procediendo a registrar en la bitacora y enviar correo', 0 );
				
			$empleador = null;
			// Si se escribio en la Bitacora y se pudo crear
			$resBit = BitacoraAdministrador::addRegisterBitacoraAdministrador($idAdministrador,$responsableAdmin,"ACTIVACION",'Activacion de Nuevo Administrador');
				
			// Enviamos correo a los grupos de admin
				
			$admonEmail = EmailDistributionList::getEmailAdministradores ();
				
			// Enviamos correo al representante del Empleador
			$q = self::getEmailById($idAdministrador);
			$data = $q->fetch(PDO::FETCH_ASSOC);
			$emailAdministrador = $data['email'];
			$administradorEmail = array();
			array_push($administradorEmail, $emailAdministrador);
				
			$greeting = "Estimado Administraodr: " ;
			$message =  " \n  Bienvenido al equipo tu cuenta ha sido activada esperamos que puedas ingresar al SITRABS ";
			$subject = " SITRABS - Activacion de Cuenta de Administrador completada ";
			$resEnvioToEmpleador = sentEmail ( $greeting, $message, $subject, $administradorEmail );
				
			$greeting = "Estimado Administrador: " ;
			$message =  " \n  Un nuevo administrador ha sido dado de alta en SITRABS, puede revisar las bitacoras para mayor detalle ";
			$subject = " SITRABS - Activacion de Cuenta de Administrador completada ";
			$resEnvioToEmpleador = sentEmail ( $greeting, $message, $subject, $admonEmail );
				
			return true;
		}else{
			return false;
		}
	
	}
	


	/*
	 * 3 operaciones
	* 1) Actualizar el estado del empleador
	* 2) Escribir en la bitacora
	* 3) Mandar correo al empleador y al grupo de admin
	*/
	public static function rechazar ( $idAdministrador, $responsableAdmin, $responsableEmp ){
		$query = "update tbl_administrador set estado = 'Rechazado' where id_administrador = ? ";
	
		$con = Database::connect ();
		// preparar query para ejecucion
		$stmt = $con->prepare ( $query );
	
	
		$stmt->bindParam ( 1, $idAdministrador );
	
		$res =  $stmt->execute ();
	
		if($res){
			Database::disconnect();
	
			error_log ( 'Rechazado Administrador procediendo a registrar en la bitacora y enviar correo', 0 );
	
			$empleador = null;
			// Si se escribio en la Bitacora y se pudo crear
			$resBit = BitacoraAdministrador::addRegisterBitacoraAdministrador($idAdministrador,$responsableAdmin,"RECHAZO",'Rechazo de Nuevo Administrador');
	
			// Enviamos correo a los grupos de admin
	
			$admonEmail = EmailDistributionList::getEmailAdministradores ();
	
			// Enviamos correo al representante del Empleador
			$q = self::getEmailById($idAdministrador);
			$data = $q->fetch(PDO::FETCH_ASSOC);
			$emailAdministrador = $data['email'];
			$administradorEmail = array();
			array_push($administradorEmail, $emailAdministrador);
	
			$greeting = "Estimado Usuario: " ;
			$message =  " \n  Tu solicitud como Administrador ha sido dengegada te invitamos a que te registres como Aspirante para estar al tanto de tods las ofertas laborales ";
			$subject = " SITRABS - Rechazo de Cuenta de Administrador";
			$resEnvioToEmpleador = sentEmail ( $greeting, $message, $subject, $administradorEmail );
	
			$greeting = "Estimado Administrador: " ;
			$message =  " \n  Se ha rechazado una solicitud para un usuario administrador ";
			$subject = " SITRABS - Rechazo de Cuenta de Administrador ";
			$resEnvioToEmpleador = sentEmail ( $greeting, $message, $subject, $admonEmail );
	
			return true;
		}else{
			return false;
		}
	
	}
}
?>